﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using Mvc4WebApiKoTb.Helpers.MvcBasic;

namespace Mvc4WebApiKoTb.Models.Testtemplates
{
    public class TesttemplateModel
    {
        /// <summary>
        /// Hier wird zusätzlich noch das Type Attribut auf Date gesetzt.
        /// d.h. wenn man z.B. eine aktuelle Chrome Version installiert hat,
        /// wird hier automatisch ein Kalender Control von Chrome angezeigt, wenn
        /// man den Focus auf das Eingabefeld setzt. Problematisch ist aber wenn man
        /// bereits ein jQueryUi Calendar Control nutzt, hier werden dann beide Calendar Controls geladen.
        /// </summary>
        [HtmlTag(Autofocus = true, InputType = HtmlInputTypes.Date)]
        [DataType(DataType.DateTime)]
        [Display(Name = "Datum")]
        public DateTime Datum { get; set; }

        /// <summary>
        /// Ohne Type Attribut, d.h. keine Probleme bei Chrome Browsern das Calendarcontrols doppelt angezeigt werden
        /// </summary>
        [HtmlTag(Autofocus = true)]
        [DataType(DataType.Date)]
        [Display(Name = "Geburtstag")]
        public DateTime Geburtsdatum { get; set; }

        /// <summary>
        /// Verwendung des DataType Attributes Time, veranlasst MVC 
        /// nicht das "DateTime" Template zu nutzen
        /// sondern, es wird das "Time" Template genommen.
        /// </summary>
        [DataType(DataType.Time)]
        [Display(Name = "Aktuelle Zeit")]
        public DateTime CurrentTime { get; set; }

        [HtmlTag(Autofocus = true, InputType = HtmlInputTypes.Time)]
        [DataType(DataType.Time)]
        [Display(Name = "Geburtszeit")]
        public DateTime BirthTime { get; set; }

        [HtmlTag(MaxLength = 5, Min=10, Max=50000, CssClass = "input-xxlarge")]
        [Display(Name = "Geld in Euro")]
        public int Geld { get; set; }

        [StringLength(160, MinimumLength = 2)]
        [HtmlTag(Pattern = "Hier den Namen eingeben", CssClass = "input-xxlarge")]
        [Display(Name = "Nachname")]
        public string Name { get; set; }

        [HtmlTag(Pattern = "Hier den Vorname eingeben", CssClass = "input-xxlarge")]
        [Display(Name = "Vorname")]
        [DataType(DataType.Text)]
        public string Vorname { get; set; }

        [Display(Name = "Hat Vater")]
        public bool HasFather { get; set; }
    }
}